#include <iostream>
#include <string>
#include <mysql/mysql.h>
using namespace std;

const std::string host="127.0.0.1";
//  const std::string host="localhost";
const std::string user="connector";
const std::string passwd="xiaojie4029";
const std::string db="conn";
const unsigned int port=3306;

int main()
{
    //std::cout<<"mysql client version" << mysql_get_client_info()<<std::endl;

    MYSQL *my = mysql_init(nullptr);
    if(nullptr == my)
    {
        cerr<<"init MYSQL error"<<endl;
        return 1;
    }

    if(mysql_real_connect(my,host.c_str(),user.c_str(),passwd.c_str(),db.c_str(),port,nullptr,0) == nullptr)
    {
        cerr<<"connect MYSQL error"<<endl;
        return 2;
    }
    mysql_set_character_set(my,"utf8");
    // cout<<"connect MYSQL success"<<endl;

    std::string sql = "select * from user";
    int n = mysql_query(my,sql.c_str());
    if( n == 0)  cout<<sql<<"success!"<<endl;
    else
    {
        cout<<sql<<"filed!"<<endl;
        return 3;
    }
    //当调用mysql_store_result()函数 数据库会为你malloc一大堆空间 存放结果集
    //使用完成之后要释放掉内存  使用mysql_free_result();
    MYSQL_RES* res = mysql_store_result(my);

    //从结果集中,得到行数
    int rows = mysql_num_rows(res);
    //从结果集中,得到列数
    int fields = mysql_num_fields(res);

    //从结果集中,得到列名
    MYSQL_FIELD* fields_array = mysql_fetch_fields(res);
    for(int i = 0;i<fields;i++)
    {
        cout << fields_array[i].name <<"\t";
    }
    cout<<"\n";

    for(int i =0;i<rows;i++)
    {
        MYSQL_ROW row = mysql_fetch_row(res);
        for(int j = 0; j< fields;j++)
        {
            cout<<row[j]<<"\t";
        }
        cout<<"\n";
    }
    

    // while(true)
    // {
    //     cout<<"MYSQL>>>";
    //     if(!std::getline(std::cin,sql) || sql == "quit")
    //     {
    //         cout<<"have a good time!"<<endl;
    //         break;
    //     }

    //     int n = mysql_query(my,sql.c_str());
    //     if(n == 0)
    //     {
    //         cout<< sql << "  " <<"success!" << endl;
    //     }
    //     else
    //     {
    //         cout<< sql << "  "<<"filed!" << endl;
    //     }
    // }


    mysql_free_result(res);
    mysql_close(my);
    return 0;
}